package com.atguigu.ggkt.vod.service;

import com.atguigu.ggkt.model.vod.Course;
import com.atguigu.ggkt.vo.vod.CourseFormVo;
import com.atguigu.ggkt.vo.vod.CoursePublishVo;
import com.atguigu.ggkt.vo.vod.CourseQueryVo;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 课程 服务类
 * </p>
 *
 * @author lxx
 * @since 2022-06-30
 */
public interface CourseService extends IService<Course> {

    /**
     * 获取点播课程列表
     * @param page
     * @param courseQueryVo
     * @return
     */
    Map<String, Object> findPageCourse(Page<Course> page, CourseQueryVo courseQueryVo);

    /**
     * 添加课程基本信息
     * @param courseFormVo
     * @return
     */
    Long saveCourseInfo(CourseFormVo courseFormVo);

    /**
     * 根据id获取课程基本信息
     * @param id 课程id
     * @return
     */
    CourseFormVo getCourseInfoById(Long id);

    /**
     * 修改课程基本信息
     * @param courseFormVo
     * @return
     */
    Long updateCourseInfo(CourseFormVo courseFormVo);

    /**
     * 获取发布课程信息
     * @param id 课程id
     * @return
     */
    CoursePublishVo getCoursePublishVo(Long id);

    /**
     * 课程最终发布
     * @param id
     */
    void finalPublishCourse(Long id);

    /**
     * 根据id删除课程
     * @param id 删除课程
     */
    void deleteCourseById(Long id);

    Map<String, Object> findPage(Page<Course> pageParam, CourseQueryVo courseQueryVo);

    Map<String, Object> getInfoById(Long courseId);

    List<Course> findlist();
}
